﻿//using System;
//using nRoute.Components;
//using nRoute.Components.Routing;
//using nRoute.Navigation.Containers;
//using Windows.UI.Xaml;

//namespace nRoute.Navigation
//{
//    interface INavigationService
//    {
//        bool CancelNavigation(NavigationRequest navigationRequest);

//        INavigationHandler DefaultNavigationHandler { get; set; }

//        INavigationContainer GetNavigationContainer(DependencyObject dependencyObject);

//        INavigationHandler GetNavigationHandler(string name);

//        INavigationHandler GetNavigationHandler(DependencyObject dependencyObject);

//        T GetSupporter<T>(nRoute.Navigation.Containers.INavigationContainer container) 
//            where T : class;

//        T GetSupporter<T>(object content) 
//            where T : class;

//        bool IsNavigationHandlerRegistered(string name);
        
//        void MapRoute(RouteBase route);
        
//        void MapRoute(string routeName, RouteBase route);
        
//        void MapRoute(string routeName, string url, ParametersCollection defaults, ParametersCollection constraints, ParametersCollection dataTokens, 
//            IRouteHandler handler);

//        void MapRoute(string routeName, string url, ParametersCollection defaults, ParametersCollection constraints, IRouteHandler handler);
        
//        void MapRoute(string routeName, string url, ParametersCollection defaults, IRouteHandler handler);
        
//        void MapRoute(string routeName, string url, IRouteHandler handler);
        
//        void MapRoute(string url, ParametersCollection defaults, ParametersCollection constraints, IRouteHandler handler);
        
//        void MapRoute(string url, ParametersCollection defaults, IRouteHandler handler);

//        void MapRoute(string url, IRouteHandler handler);

//        IDisposable Navigate(NavigationRequest navigationRequest);
        
//        IDisposable Navigate(NavigationRequest navigationRequest, INavigationHandler navigationHandler);
        
//        IDisposable Navigate(NavigationRequest navigationRequest, INavigationHandler navigationHandler, Action<ResponseStatus> statusCallback);
        
//        IDisposable Navigate(NavigationRequest navigationRequest, Action<ResponseStatus> statusCallback);
        
//        void ProcessNavigationLifecycle(NavigationRequest request, ISupportNavigationLifecycle supporter, 
//            ISupportNavigationViewLifecycle viewSupporter, Action<bool> supporterCallback, Action viewSupporterCallback);
        
//        void RegisterNavigationHandler(string name, INavigationHandler handler);
        
//        void Resolve(NavigationRequest navigationRequest, Action<NavigationResponse> responseCallback);
        
//        INavigationHandler ResolveHandlerInVisualTree(DependencyObject element);
        
//        INavigationHandler ResolveHandlerInVisualTree(FrameworkElement element, string handlerName);
        
//        void UnregisterNavigationHandler(string name);
//    }
//}
